Docker Desktop for WindowsのバックエンドとしてWSL2を使用する
データアナリティクス事業本部の貞松です。
Windows Updateからの配信を待ちきれずにWindows 10をバージョン2004にアップデートした勢です。
Windows 10のバージョン2004から正式に導入されたWindows Subsystem for Linux 2(WSL2)ですが、これをDocker Desktop for Windowsに設定できるようになったという情報を見かけたので試してみました。
これにより「Hyper-V」無しで「Linux」のコンテナをローカルで動かせるようになる為、期待が高まります。
実行環境
- OS: Windows 10 Home (バージョン2004, OSビルド19041.264)
- WSL バージョン2
- Docker Desktop for Windows Version 2.3.0.4(46911)
※ Homeエディションなので当然Hyper-Vは使えない環境です。
WSL2のインストール
WSL2のインストールについては、既に最高の記事がありますのでこちらをご参照ください。
(リソース割当やディスクサイズの調整など細かい設定まで記載されている決定版です)
Windows Subsystem for Linux 2(WSL 2)をセットアップしてみた
Docker Desktop for Windowsのインストール
Docker Desktop for Windowsにインストールについては、公式ページからインストーラーをダウンロードして実行するだけです。簡単ですね。
https://hub.docker.com/editions/community/docker-ce-desktop-windows
インストーラーの画面で「Enable WSL 2 Windows Features」にチェックが入っていることだけ確認した上でインストールを実行してください。
インストールが完了するとDocker Desktop for Windowsが起動して、最初のチュートリアル画面が表示されます。
(特に必要ないので今回は触りません)
動作確認
WSL2をバックエンドとしてDocker Desktop for Windowsを実行していると、WSLのディストリビューション一覧は以下のようになります。
docker-desktop
とdocker-desktop-data
がVERSION2で実行されています。
PS C:\Users\user> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Running 2 docker-desktop Running 2 docker-desktop-data Running 2
実際にコンテナが動作することを検証する為に今回はAmazon Linux 2のイメージをDocker HubからPullして実行します。
https://hub.docker.com/_/amazonlinux
docker pull
→ docker run
を実行して、/etc/image-id
から実行されているイメージの情報を取得します。
PS C:\Users\user> docker pull amazonlinux latest: Pulling from library/amazonlinux 3d24604292f2: Pull complete Digest: sha256:76fb97750c68e0531b0c7fa405ecdb591ec78c0be763d04e9db1cbbc6adf2a06 Status: Downloaded newer image for amazonlinux:latest docker.io/library/amazonlinux:latest PS C:\Users\user> docker run -it amazonlinux bash-4.2# cat /etc/image-id image_name="amzn2-container-raw" image_version="2" image_arch="x86_64" image_file="amzn2-container-raw-2.0.20200602.0-x86_64" image_stamp="512f-33bb" image_date="20200603001727" recipe_name="amzn2 container" recipe_id="534fb8b7-3a43-d095-423e-8625-142b-3107-e2b736e1"
一応、Dockerコンテナの実行状態も確認してみます。
PS C:\Users\user> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 161bca3a4e43 amazonlinux "/bin/bash" About a minute ago Up About a minute musing_engelbart
Hyper-Vが無くてもちゃんと動作していることが確認できました!
ちなみにDocker Desktop for Windowsを停止すると、当たり前ですがWSL上のDocker Desktop用ディストリビューションも停止状態になります。
PS C:\Users\sady_> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Running 2 docker-desktop Stopped 2 docker-desktop-data Stopped 2
まとめ
ついにHyper-V無し環境でDocker Desktop for Windowsが動作する時代がやってきました。Linuxのコンテナを動作させることができるので、Windows上でも実際のデプロイ環境に合わせた開発・テスト環境を簡単に構築することができそうです。
WSL2で動作しているLinuxディストリビューション上でDockerを動作させて、完全にLinux環境に閉じた開発環境を構成するのも魅力的なので、そちらも試してみたいです。